﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;

namespace MapColoring.MontadorMapa
{
    /// <summary>
    /// Objeto representando um ponto no mapa
    /// </summary>
    public class Ponto
    {
        #region Campos Privados

        private int id;

        private double x;
        private double y;

        #endregion

        #region Propriedades

        /// <summary>
        /// Identificador do ponto (utilizado para testes)
        /// </summary>
        public int Id
        {
            get { return id; }
        }

        /// <summary>
        /// Coordenada X no plano xy
        /// </summary>
        public double X
        {
            get { return x; }
        }
        
        /// <summary>
        /// Coordenada Y no plano xy
        /// </summary>
        public double Y
        {
            get { return y; }
        }

        #endregion

        #region Construtores

        /// <summary>
        /// Objeto representando um ponto no mapa
        /// </summary>
        /// <param name="x">Coordenada X no plano xy</param>
        /// <param name="y">Coordenada Y no plano xy</param>
        public Ponto(double x, double y, int id)
        {
            if (x > 1  || x < 0 || y > 1  || y < 0 )
            {
                throw new Exception("Coordenadas de ponto inválidas. O ponto deve estar localizado no quadrado de lado 1.");
            }

            this.x = x;
            this.y = y;
            this.id = id;
        }

        #endregion
    }
}
